条件测试 |
您所在的位置:网站首页 › linux if条件测试 › 条件测试 |
在运行测试的时候,有些时候,我们需要排出某些@Test方法,不要让它运行,这时,我们就可以给它标记一个@Disabled: @Disabled @Test void testBug101() { // 这个测试不会运行 }为什么我们不直接注释掉@Test,而是要加一个@Disabled?这是因为注释掉@Test,JUnit就不知道这是个测试方法,而加上@Disabled,JUnit仍然识别出这是个测试方法,只是暂时不运行。它会在测试结果中显示: Tests run: 68, Failures: 2, Errors: 0, Skipped: 5类似@Disabled这种注解就称为条件测试,JUnit根据不同的条件注解,决定是否运行当前的@Test方法。 我们来看一个例子: public class Config { public String getConfigFile(String filename) { String os = System.getProperty("os.name").toLowerCase(); if (os.contains("win")) { return "C:\\" + filename; } if (os.contains("mac") || os.contains("linux") || os.contains("unix")) { return "/usr/local/" + filename; } throw new UnsupportedOperationException(); } }我们想要测试getConfigFile()这个方法,但是在Windows上跑,和在Linux上跑的代码路径不同,因此,针对两个系统的测试方法,其中一个只能在Windows上跑,另一个只能在Mac/Linux上跑: @Test void testWindows() { assertEquals("C:\\test.ini", config.getConfigFile("test.ini")); } @Test void testLinuxAndMac() { assertEquals("/usr/local/test.cfg", config.getConfigFile("test.cfg")); }因此,我们给上述两个测试方法分别加上条件如下: @Test @EnabledOnOs(OS.WINDOWS) void testWindows() { assertEquals("C:\\test.ini", config.getConfigFile("test.ini")); } @Test @EnabledOnOs({ OS.LINUX, OS.MAC }) void testLinuxAndMac() { assertEquals("/usr/local/test.cfg", config.getConfigFile("test.cfg")); }@EnableOnOs就是一个条件测试判断。 我们来看一些常用的条件测试: 不在Windows平台执行的测试,可以加上@DisabledOnOs(OS.WINDOWS): @Test @DisabledOnOs(OS.WINDOWS) void testOnNonWindowsOs() { // TODO: this test is disabled on windows }只能在Java 9或更高版本执行的测试,可以加上@DisabledOnJre(JRE.JAVA_8): @Test @DisabledOnJre(JRE.JAVA_8) void testOnJava9OrAbove() { // TODO: this test is disabled on java 8 }只能在64位操作系统上执行的测试,可以用@EnabledIfSystemProperty判断: @Test @EnabledIfSystemProperty(named = "os.arch", matches = ".*64.*") void testOnlyOn64bitSystem() { // TODO: this test is only run on 64 bit system }需要传入环境变量DEBUG=true才能执行的测试,可以用@EnabledIfEnvironmentVariable: @Test @EnabledIfEnvironmentVariable(named = "DEBUG", matches = "true") void testOnlyOnDebugMode() { // TODO: this test is only run on DEBUG=true }当我们在JUnit中运行所有测试的时候,JUnit会给出执行的结果。在IDE中,我们能很容易地看到没有执行的测试: 带有⊘标记的测试方法表示没有执行。 练习条件测试。 小结条件测试是根据某些注解在运行期让JUnit自动忽略某些测试。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |